The described aspects relate to distributed processing systems, and more particularly, to apparatus and methods of a zero single point of failure load balancer.
In computer processing, a group of commands can often be divided into individual commands. The commands can be executed in parallel, and then the results can be combined. Additionally, since a single computing apparatus has finite processing capabilities, multiple computing apparatuses may be used to execute the commands. However, using more than a single computing device may create problems in distributing and combining the commands among the computing devices. When multiple computing devices are used, the group of computing apparatuses may be called a processing farm.
Some methods of distributing commands to multiple apparatuses use a master to distribute the commands to a number of slaves and to combine the results of executing the commands. In these methods, the master distributes commands to slaves; the slaves execute the commands; and, the master then combines the results of the executed commands. Each of the slaves and the master may be a separate computing device. The method or apparatus for dividing the commands among the computing devices is often called a load balancer, which may be executed and/or which may reside on the master computing device.
One problem with this method of distributing processes is that if the master malfunctions, then the work may be lost and it may be difficult to replace the master because the master may require specialized hardware and/or software. As such, often a computing apparatus that is more reliable and expensive is used as a master. It may also be difficult upgrading the master without losing the use of all the computing apparatuses.
Another problem is that it may be difficult to add slaves dynamically to the system so that the master can use the slaves without having to reset the system. For example, it may be difficult to add slaves after the software commands have been divided.
Another problem is that it may be difficult to recover when a slave malfunctions and loses the results of executing a command.
And yet another problem with using a master and multiple slaves is that the process for selecting a new master may be complicated. For example, if the master fails or is otherwise inoperative, a procedure must be established to designate a new master that is able to pick up where the previous master left off. Such procedures are often cumbersome.
Thus, improvements in load balancer systems are desired.